var util = require('../../utils/util.js');
var api = require('../../config/api.js');

var app = getApp();
Page({
 data: {
  keywrod: '',
  searchStatus: false,
  goodsList: [],
  helpKeyword: [],
  historyKeyword: [],
  categoryFilter: false,
  currentSort: 'name',
  currentSortType: 'default',
  currentSortOrder: 'desc',
  filterCategory: [],
  defaultKeyword: {},
  hotKeyword: [],
  page: 1,
  size: 20,
  categoryId: 0
 },
 //事件处理函数
 closeSearch: function() {
  wx.navigateBack()
 },
 clearKeyword: function() {
  this.setData({
   keyword: '',
   searchStatus: false
  });
 },
 onLoad: function() {
  this.getSearchKeyword();
 },

 getSearchKeyword() {
  let that = this;
  util.request(api.SearchIndex).then(function(res) {
   if (res.errno === 0) {
    that.setData({
     historyKeyword: res.data.historyKeywordList,
     defaultKeyword: res.data.defaultKeyword,
     hotKeyword: res.data.hotKeywordList
    });
   }
  });
 },

 inputChange: function(e) {

  this.setData({
   keyword: e.detail.value,
   searchStatus: false
  });

  if (e.detail.value) {
   this.getHelpKeyword();
  }
 },

 getHelpKeyword: function() {
  let that = this;
  util.request(api.SearchHelper, {
   keyword: that.data.keyword
  }).then(function(res) {
   if (res.errno === 0) {
    that.setData({
     helpKeyword: res.data
    });
   }
  });
 },

 inputFocus: function() {
  this.setData({
   searchStatus: false,
   goodsList: []
  });

  if (this.data.keyword) {
   this.getHelpKeyword();
  }
 },

 clearHistory: function() {
  this.setData({
   historyKeyword: []
  });

  util.request(api.SearchClearHistory, {}, 'POST')
   .then(function(res) {
    console.log('清除成功');
   });
 },

 getGoodsList: function() {
  let that = this;
  util.request(api.GoodsList, {
   keyword: that.data.keyword,
   page: that.data.page,
   size: that.data.size,
   sort: that.data.currentSort,
   order: that.data.currentSortOrder,
   categoryId: that.data.categoryId
  }).then(function(res) {
   if (res.errno === 0) {
    that.setData({
     searchStatus: true,
     categoryFilter: false,
     goodsList: res.data.goodsList,
     filterCategory: res.data.filterCategoryList
    });
   }

   //重新获取关键词
   that.getSearchKeyword();
  });
 },
 onKeywordTap: function(event) {

  this.getSearchResult(event.target.dataset.keyword);

 },
 getSearchResult(keyword) {
  if (keyword === '') {
   keyword = this.data.defaultKeyword.keyword;
  }
  this.setData({
   keyword: keyword,
   page: 1,
   categoryId: 0,
   goodsList: []
  });

  this.getGoodsList();
 },
 openSortFilter: function(event) {
  let currentId = event.currentTarget.id;
  switch (currentId) {
   case 'categoryFilter':
    this.setData({
     categoryFilter: !this.data.categoryFilter,
     currentSortType: 'category',
     currentSort: 'add_time',
     currentSortOrder: 'desc'
    });
    break;
   case 'priceSort':
    let tmpSortOrder = 'asc';
    if (this.data.currentSortOrder == 'asc') {
     tmpSortOrder = 'desc';
    }
    this.setData({
     currentSortType: 'price',
     currentSort: 'retail_price',
     currentSortOrder: tmpSortOrder,
     categoryFilter: false
    });

    this.getGoodsList();
    break;
   default:
    //综合排序
    this.setData({
     currentSortType: 'default',
     currentSort: 'name',
     currentSortOrder: 'desc',
     categoryFilter: false,
     categoryId: 0,
    });
    this.getGoodsList();
  }
 },
 selectCategory: function(event) {
  let currentIndex = event.target.dataset.categoryIndex;
  let filterCategory = this.data.filterCategory;
  let currentCategory = null;
  for (let key in filterCategory) {
   if (key == currentIndex) {
    filterCategory[key].selected = true;
    currentCategory = filterCategory[key];
   } else {
    filterCategory[key].selected = false;
   }
  }
  this.setData({
   filterCategory: filterCategory,
   categoryFilter: false,
   categoryId: currentCategory.id,
   page: 1,
   goodsList: []
  });
  this.getGoodsList();
 },
 onKeywordConfirm(event) {
  this.getSearchResult(event.detail.value);
 }
});